package com.siqi.hr.system.custom.dao.intf;

import com.siqi.hr.system.common.enums.OperationEnum;
import com.siqi.hr.system.custom.entity.EntityOperation;
import com.siqi.hr.system.custom.entity.EntityRoleOperation;
import com.siqi.hr.system.custom.filter.EntityOperationFilter;

import java.util.List;
import java.util.Map;

/**
 * 实体权限操作dao层(主要处理操作按钮的增删改查)
 * Created by Administrator on 2016/8/16.
 * @author xiaogq
 * @since JDK1.8.0_12
 */
public interface EntityOperationDao {

    /**
     * 根据条件查询所有的操作
     * @author       xiaogq
     * operation      需要添加的操作对象
     */
    public List<EntityOperation> queryAllOperation(EntityOperationFilter operationFilter) throws Exception;

    /**
     * 根据条件查询所有操作记录总数
     * @author       xiaogq
     * operation      需要添加的操作对象
     */
    public int queryAllOperationCounts(EntityOperationFilter operationFilter) throws Exception;

    /**
     * 根据当前角色查询实体指定位置的操作
     * @author                      xiaogq
     * @param roleId               角色id
     * @param entityId            实体id
     * @param operationEnum      按钮显示的位置枚举值(showList：显示在列表，showColumn：显示在列前，showView:显示在查看页)
     * @return
     */
    public List<EntityOperation> queryEntityOperationByHere(String roleId, int entityId,OperationEnum operationEnum) throws Exception;

    /**
     * 根据操作id查询对应的操作信息
     * @author                     xiaogq
     * @param id                   操作id
     */
    public EntityOperation queryEntityOperationById(String id) throws Exception;

    /**
     * 添加操作接口方法
     * @author       xiaogq
     * operation      需要添加的操作对象
     */
    public int addEntityOperation(EntityOperation operation) throws Exception;

    /**
     * 修改操作接口方法
     * @author       xiaogq
     * operation      需要添加的操作对象
     */
    public int updateEntityOperation(EntityOperation operation) throws Exception;

    /**
     * 根据id删除操作方法
     * @author                     xiaogq
     * @param id                   操作id
     */
    public void deleteEntityOperation(String id) throws Exception;

    /**
     * 获得所有受权限控制的操作
     * @author       xiaogq
     * @param        bool     是否受权限控制(true:是，false:否)
     * @return
     */
    public List<EntityOperation> queryAllOperationByPms(Boolean bool);

    /**
     * 根据角色id获得所有已经启用的操作
     * @author       xiaogq
     * @param        roleid     角色id
     * @return
     */
    public List<Map<String,Object>> queryRoleOperationList(String roleid);

}
